// 1.获取 fs 和 http 核心模块
var fs = require("fs");
var http = require("http");
var template = require("art-template");
var url = require("url");

// 2.通过http.createServer() 创建 web服务器
var server = http.createServer();

// 首页渲染 数据
var comments = [
  {
    title: "关于NBA",
    message:
      "美国职业篮球联赛（National Basketball Association），简称NBA，是由北美三十支队伍组成的男子职业篮球联盟，汇集了世界上最顶级的球员。",
    name: "YLZ",
    dateTime: "2021-09-21",
  },
];

// 3.请求request 请求
server.on("request", function (request, response) {
  // 获取 请求地址
  // 使用 url。parse 方法 将路径解析为一个方便操作的对象，第二个参数为 true表示将查询字符串转为一个对象(通过 query访问)
  var parseUrl = url.parse(request.url, true);

  // 单独获取不包含查询字符串的路径部分 (该路径不包含 ？ 之后的内容)
  var parsename = parseUrl.pathname;

  if (parsename === "/") {
    fs.readFile("./views/app.html", function (error, data) {
      if (error === null) {
        // 通过引擎模板 渲染首页
        var htmlStr = template.render(data.toString(), {
          comments: comments,
        });
        response.end(htmlStr);
      }
    });
  } else if (parsename === "/post") {
    fs.readFile("./views/post.html", function (error, data) {
      if (error === null) {
        response.end(data);
      }
    });
  }

  // 开启 public公共资源
  // 请求路径是以 '/public' 开头的   则认为  你要访问的是 public 中的某个静态成员
  else if (parsename.indexOf("/public/") === 0) {
    //   如果 要读取 public 里面的静态成员，则通过url地址访问
    fs.readFile("." + parsename, function (error, data) {
      if (error === null) {
        response.end(data);
      } else {
        response.end("文件读取失败");
      }
    });
  }
  //   客户端重定向
  else if (parsename === "/pinglun") {
    // 获取表单接收的数据
    var comment = parseUrl.query;

    //获取日期与时间
    var myDate = new Date();
    var year = myDate.getFullYear();
    var month = myDate.getMonth() + 1;
    var date = myDate.getDate();
    comment.dateTime = year + "-" + month + "-" + date;

    comments.unshift(comment);
    response.statusCode = 302;
    response.setHeader("Location", "/");
    response.end();
  } else {
    fs.readFile("./views/404.html", function (error, data) {
      response.end(data);
    });
  }
});

// 4.开启服务器
server.listen(3000, function () {
  console.log("Server is Running");
});
